package com.solidumgame.locroninja.juego
{
	import com.solidumgame.locroninja.juego.ingredientes.Ingrediente;
	import com.solidumgame.locroninja.juego.ingredientes.IngredientesNoCortadosEnum;
	
	import flash.display.Stage;
	import flash.events.TimerEvent;
	import flash.geom.Vector3D;
	import flash.utils.Timer;
	
	import libs.com.greensock.TweenLite;
	import libs.com.greensock.TweenMax;
	
	/**
	 * Se encarga de generar los ingredientes  
	 * @author Tdadone
	 * 
	 */
	public class GeneradorIngredientes 
	{
		protected var cantidadValidos:Number = 0;
		protected var cantidadNoValidos:Number =0;
		protected var medio:Number = 0;
		protected var timer:Timer = new Timer(1000);
		
		public function GeneradorIngredientes()
		{
			//Inicializamos timer de generacion de conjunto de ingredientes

		}
		
		public function inicializarTiempo():void{
			timer.addEventListener(TimerEvent.TIMER,actualizarMedio);
			timer.start();
			
		}
		
		protected function actualizarMedio(e:TimerEvent):void{
			medio+=0.001;
		}
		
		public function crearIngredientes():void{
			//Cuantos se crearan en este conjunto
			if(cantidadValidos+cantidadNoValidos<=0){
				var cantidadTotal:Number = Math.floor(Math.random()*(2+medio*5))+1;
				
				for(var i:int = 0; i < cantidadTotal; i++){
					
					if(Math.random() < medio && cantidadNoValidos<cantidadTotal/2){
						TweenLite.delayedCall((Math.random()*0.4+0.3)*i,crearIngrediente,[false]);
						cantidadNoValidos++;
					}else{
						TweenLite.delayedCall((Math.random()*0.4+0.3)*i,crearIngrediente,[true]);
						cantidadValidos++;
					}
				}
				
			
			}
		}
		
		protected function crearIngrediente(valido:Boolean):void{
			
			var ingrediente:Ingrediente 
			
			if(valido){
				ingrediente = Ingrediente(IngredientesNoCortadosEnum.getIngredienteValido());
				cantidadValidos--;
			}else{
				ingrediente = Ingrediente(IngredientesNoCortadosEnum.getIngredienteNoValido());
				cantidadNoValidos--;
			}
				
			var posicion:Vector3D = new Vector3D(Math.random()*50+270,Math.random()*-20-150,0);
			
			var anguloVelocidad:Number = Math.floor(Math.random()*14+55) *Math.PI/180;
			var distanciaVelocidad:Number = Math.floor(Math.random()*20)+700;
			var velocidadVelocidad:Number = Math.sqrt(distanciaVelocidad*10/Math.sin(2*anguloVelocidad)) ;
			var velocidad:Vector3D = new Vector3D(-velocidadVelocidad*Math.cos(anguloVelocidad),velocidadVelocidad*Math.sin(anguloVelocidad),0);
			var angulo:Vector3D = new Vector3D(Math.random()/2,Math.random()/2,Math.random()/2);
			
			//Agregamos ingrediente
			ingrediente.agregarIngrediente(posicion, velocidad, angulo, null);		
			
		}
	}
}